# 1.获取字符串长度   len()
str1 = "疫情反复,大家注意安全"
# print(len(str1))

# 2.count()  在整个字符串中查找子串出现的次数
str2 = "最新新闻,苹果发布最新的M1芯片的mac pro,10核,32G,M1结束了Intel时代"
# print(str2.count("M1"))   # 2
# print(str2.count("M1",1,20))  # 统计在某个区间内出现了几次

# 3.字符串大小写转换   
# upper() 将字符串中的小写字母转换为大写
str3 = "i miss You very much!"
# print(str3.upper())

# lower() 将字符串中的大写字母转换为小写
str4 = "I MISS YOU VERY MUCH!"
# print(str4.lower())

# swapcase()  将字符串中大写字母转换为小写字母,小写字母转换为大写字母
str5 = "i LoVe yoU ForEver!"
# print(str5.swapcase())  # I lOvE YOu fOReVER! 

# title()  将英文单词的首字母转换为大写
str6 = "i love you forever!"
# print(str6.title())  # I Love You Forever! 

#  str()  # 将其他数据类型转换为字符串
num = 987
# print(type(num))
# print(type(str(num)))  # <class 'str'>

# int()  # 将其他数据类型转化为整型

# 填充字符串 (了解)
#     center() 表示填充字符串到指定的长度(左右两边对称填充),默认是使用空格填充
str7 = "我特别喜欢成龙,其实我更喜欢他老婆林凤娇!"
# print(str7)
# print(str7.center(50))
# print(str7.center(50,'*'))


# ljust()
# print(str7.ljust(50,"%"))
# rjust()
# print(str7.rjust(50,"="))
# zfill()  使用0填充字符串到指定的长度
# print(str7.zfill(50))


# 查找(重点)
# find() 查找子串在字符串中第一次出现的位置,返回的是下标,若未找到返回-1
ss1 = "12348asdfg987555dlkjdhgd765"
# print(ss1.find("a"))   # 5
# print(ss1.find("z"))   # -1 "z在字符串中不存在,返回-1"

# 在指定区间内查找
# print(ss1.find("d",10,20))   #16

# rfind() 查找子串在字符串中最后一次出现的位置,返回的是下标,若未找到返回-1
# print(ss1.rfind("d"))   # 23
# print(ss1.rfind("y"))   # -1


# index() 和 find()方法类似,若未找到报错
# print(ss1.index("d"))
# print(ss1.index('x'))  # ValueError: substring not found

# max()  min()   依据ASCII码值进行比较
# print(max(ss1))   # s
# print(min(ss1))   # 1


# 字符串的提取(重点)
# strip()  去除字符串两边的指定字符(默认去除的是空格)
ss2 = "  today is a nice day  "
ss3 = "***today is a nice day****"
# print(ss2)
# print(ss2.strip())
# print(ss3)
# print(ss3.strip("*"))

# lstrip()   去除字符串左边的指定字符(默认去除的是空格)
# rstrip()   去除字符串右边的指定字符(默认去除的是空格)
# print(ss3.lstrip("*"))
# print(ss3.rstrip("*"))

# 字符串的分割和合并
# split() 以指定字符对字符串进行切割(默认是使用空格切割)  返回的是列表
ss4 = "this is a string example....wow!"
ss5 = "this-is-a-string-example....wow!"
# print(ss4.split())
# print(ss5.split("-"))

# splitlines()  按照行切割
ss6 = """
西北玄天一朵云,
乌鸦落进凤凰群.
满座都是英雄汉,
谁是君来谁是臣.
********
"""
# print(ss6)
# print(ss6.splitlines())


# 合并(拼接)  join()
ss7 = "+"
list1 = ["hello", "every", "body"]
# print(list1)
# print(ss7.join(list1))

# 替换  replace()
ss8 = "我们在伟大的领袖习近平的领导下,日子越过越好.我们感谢习近平主席.感谢习近平主席让我们有饭吃!"
# print(ss8)
# print(ss8.replace("习近平","***"))
# 控制替换的字符的次数
# print(ss8.replace("习近平","***",2))


# 字符串判断  
# isupper()  检测字符串中的字母是否全部大写
# print("ASD123jds".isupper())   # False
# print("NBV987".isupper())  # True

# islower()  检测字符串中的字母是否全部小写
# print("ASD123jds".islower())   # False
# print("mnb987".islower())  # True

# isdigit()  检测字符串是否全部由数字组成
# print("1234".isdigit())   # True
# print("987hello543".isdigit())  # False

# istitle()  检测字符串首字母是否大写
# print("Hello123".istitle())  # True
# print("hello World".istitle())  # False

# isalpha()   检测字符串是否只有字母和文字组成
# print("你好hello#$".isalpha())  # False
# print("你好hello".isalpha())    # True

# 判断字符串是否以指定字符开头或者结尾
# startwith()  判断以指定字符开头
# endswith()  判断以指定字符结束

ss9 = "Python人身苦短"
# print(ss9.startswith("Python"))  # True
# print(ss9.endswith("world"))   # False
# print(ss9.endswith("短"))      # True


# 编码和解码
# encode() 编码  默认使用utf-8字符集格式进行编码
# decode() 解码
s1 = "hello 千锋教育"
# print(s1.encode())     # b'hello \xe5\x8d\x83\xe9\x94\x8b\xe6\x95\x99\xe8\x82\xb2'
# print(s1.encode("utf-8")) # b'hello \xe5\x8d\x83\xe9\x94\x8b\xe6\x95\x99\xe8\x82\xb2'

# print(s1.encode("gbk")) # b'hello \xc7\xa7\xb7\xe6\xbd\xcc\xd3\xfd'

# 解码:
s2 = b'hello \xe5\x8d\x83\xe9\x94\x8b\xe6\x95\x99\xe8\x82\xb2'
s3 = b'hello \xc7\xa7\xb7\xe6\xbd\xcc\xd3\xfd'
# print(s2.decode())
print(s3.decode('gbk'))

# ASCII 值转换
# chr()   将ASCII码值转换为对应的字符
# ord()   获取字符对应的ASCII的值  是十进制数字
print(chr(65))  # A
print(ord("z"))  # 122
